 /*******************************************************************************
  * Copyright (c) 2000, 2006 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.ui.model;

 import org.eclipse.jface.resource.ImageDescriptor;

 /**
  * This adapter interface provides visual presentation and hierarchical structure
  * for workbench elements, allowing them to be displayed in the UI
  * without having to know the concrete type of the element.
  * <p>
  * There is an associate label provider and content provider for showing
  * elements with a registered workbench adapter in JFace structured viewers.
  * </p>
  * @see WorkbenchLabelProvider
  * @see BaseWorkbenchContentProvider
  */
 public interface IWorkbenchAdapter {
     /**
      * Returns the children of this object. When this object
      * is displayed in a tree, the returned objects will be this
      * element's children. Returns an empty array if this
      * object has no children.
      *
      * @param o The object to get the children for.
      * @return Object[]
      */
     public Object [] getChildren(Object o);

     /**
      * Returns an image descriptor to be used for displaying an object in the workbench.
      * Returns <code>null</code> if there is no appropriate image.
      *
      * @param object The object to get an image descriptor for.
      * @return ImageDescriptor
      */
     public ImageDescriptor getImageDescriptor(Object object);

     /**
      * Returns the label text for this element. This is typically
      * used to assign a label to this object when displayed
      * in the UI. Returns an empty string if there is no appropriate
      * label text for this object.
      *
      * @param o The object to get a label for.
      * @return String
      */
     public String getLabel(Object o);

     /**
      * Returns the logical parent of the given object in its tree.
      * Returns <code>null</code> if there is no parent, or if this object doesn't
      * belong to a tree.
      *
      * @param o The object to get the parent for.
      * @return Object
      */
     public Object getParent(Object o);
 }

